C语言 · 数据结构与算法复杂度分析
📚 共计 30 章节
第01章
数据结构绪论
数据结构的概念 · 逻辑结构与物理结构 · 抽象数据类型 · 算法与数据结构的关系
概念
ADT
第02章
算法基础
算法的定义 · 算法的特性 · 算法设计的要求 · 算法效率的度量方法
特性
度量
第03章
时间复杂度分析
大O表示法 · 常见时间复杂度(常数阶、线性阶、对数阶、平方阶等)· 最坏情况与平均情况
大O
分析
第04章
空间复杂度分析
空间复杂度的概念 · 常见空间复杂度 · 时间与空间的权衡
内存
权衡
第05章
线性表
线性表的定义 · 抽象数据类型 · 顺序存储结构(数组实现)· 链式存储结构(单链表)
顺序表
单链表
第06章
单链表操作
单链表的读取 · 插入与删除 · 整表创建与删除
增删
遍历
第07章
静态链表与循环链表
静态链表的概念与实现 · 循环链表 · 双向链表
静态
双向
第08章
栈
栈的定义 · 顺序存储结构 · 链式存储结构 · 两栈共享空间
LIFO
共享
第09章
栈的应用
递归的实现原理 · 括号匹配 · 表达式求值
递归
计算器
第10章
队列
队列的定义 · 循环队列 · 链式存储结构
FIFO
循环
第11章
串
串的定义 · 存储结构 · 朴素模式匹配 · KMP算法
KMP
匹配
第12章
树
树的定义 · 基本术语 · 存储结构(双亲、孩子、孩子兄弟)
递归
表示法
第13章
二叉树
二叉树的定义 · 特殊二叉树(斜树、满二叉树、完全二叉树)· 性质
完全
性质
第14章
二叉树的遍历
前序遍历 · 中序遍历 · 后序遍历 · 层序遍历
DFS
BFS
第15章
二叉树的存储结构
顺序存储 · 链式存储 · 二叉树的建立
数组
链表
第16章
线索二叉树
线索二叉树的原理 · 线索化 · 遍历线索二叉树
线索
中序
第17章
树与森林
树的存储结构 · 森林与二叉树的转换 · 树与森林的遍历
转换
遍历
第18章
赫夫曼树
赫夫曼树的定义 · 构造 · 赫夫曼编码
最优
编码
第19章
图
图的定义 · 存储结构(邻接矩阵、邻接表)· DFS · BFS
邻接
遍历
第20章
最小生成树
普里姆算法 · 克鲁斯卡尔算法
Prim
Kruskal
第21章
最短路径
迪杰斯特拉算法 · 弗洛伊德算法
Dijkstra
Floyd
第22章
拓扑排序与关键路径
AOV网与拓扑排序 · AOE网与关键路径
拓扑
关键
第23章
查找算法
顺序查找 · 有序表查找(折半、插值、斐波那契)
二分
插值
第24章
线性索引查找
稠密索引 · 分块索引 · 倒排索引
分块
倒排
第25章
二叉排序树
二叉排序树的查找 · 插入与删除
BST
动态
第26章
平衡二叉树
平衡二叉树的定义 · 平衡调整(LL、RR、LR、RL旋转)
AVL
旋转
第27章
多路查找树
2-3树 · 2-3-4树 · B树 · B+树
B树
B+树
第28章
散列表
散列函数的构造方法 · 处理冲突的方法 · 查找性能分析
哈希
冲突
第29章
排序算法(上)
冒泡排序 · 简单选择排序 · 直接插入排序 · 希尔排序
O(n²)
希尔
第30章
排序算法(下)
堆排序 · 归并排序 · 快速排序 · 排序算法比较与总结
快排
归并